// 页面加载动画
document.addEventListener('DOMContentLoaded', () => {
    document.body.style.opacity = '0';
    setTimeout(() => {
        document.body.style.opacity = '1';
    }, 100);
});

// API地址
const API_URL = {
    healthQuery: '/api/health/query'  // 健康咨询API
};

// 快捷问题点击处理
document.querySelectorAll('.question-btn').forEach(btn => {
    btn.addEventListener('click', () => {
        const question = btn.querySelector('span').textContent;
        handleQuestion(question);
    });
});

// 控制按钮处理
document.querySelectorAll('.control-btn').forEach(btn => {
    btn.addEventListener('click', function() {
        const type = this.querySelector('span')?.textContent || 'voice';
        handleControlClick(type);
    });
});

// 返回按钮处理
document.querySelector('.back-btn').addEventListener('click', function(e) {
    e.preventDefault();
    document.body.style.opacity = '0';
    setTimeout(() => {
        window.location.href = '../index.html';
    }, 300);
});

// 发送按钮点击处理
document.querySelector('.send-btn').addEventListener('click', () => {
    const input = document.querySelector('.input-group input');
    const question = input.value.trim();
    if (question) {
        handleQuestion(question);
        input.value = '';
    }
});

// 输入框回车处理
document.querySelector('.input-group input').addEventListener('keypress', (e) => {
    if (e.key === 'Enter') {
        const question = e.target.value.trim();
        if (question) {
            handleQuestion(question);
            e.target.value = '';
        }
    }
});

// 处理问题函数
async function handleQuestion(question) {
    // 添加用户问题到对话区域
    addUserMessage(question);
    
    // 显示AI正在思考的提示
    const loadingId = showLoadingMessage();
    
    try {
        // 调用后端API获取回答
        const answer = await getAIResponseFromServer(question);
        // 移除加载消息
        removeLoadingMessage(loadingId);
        // 添加AI回答
        addAIMessage(answer);
    } catch (error) {
        // 移除加载消息
        removeLoadingMessage(loadingId);
        // 显示错误消息
        addAIMessage("抱歉，我遇到了一些问题，无法回答您的问题。请稍后再试。");
        console.error("AI回答出错:", error);
    }
}

// 添加用户消息到对话区域
function addUserMessage(message) {
    const chatContainer = document.querySelector('.chat-container');
    const messageDiv = document.createElement('div');
    messageDiv.className = 'user-message';
    messageDiv.innerHTML = `
        <div class="message-content">
            <p>${message}</p>
        </div>
    `;
    chatContainer.appendChild(messageDiv);
    scrollToBottom();
}

// 添加AI消息到对话区域
function addAIMessage(message) {
    const chatContainer = document.querySelector('.chat-container');
    const messageDiv = document.createElement('div');
    messageDiv.className = 'ai-message';
    messageDiv.innerHTML = `
        <div class="ai-avatar">
            <img src="https://picsum.photos/60/60" alt="AI医生头像">
        </div>
        <div class="message-content">
            <p>${message}</p>
        </div>
    `;
    chatContainer.appendChild(messageDiv);
    scrollToBottom();
}

// 显示AI正在思考的加载消息
function showLoadingMessage() {
    const chatContainer = document.querySelector('.chat-container');
    const loadingId = 'loading-' + Date.now();
    const messageDiv = document.createElement('div');
    messageDiv.className = 'ai-message';
    messageDiv.id = loadingId;
    messageDiv.innerHTML = `
        <div class="ai-avatar">
            <img src="https://picsum.photos/60/60" alt="AI医生头像">
        </div>
        <div class="message-content">
            <div class="thinking-dots">
                <span></span>
                <span></span>
                <span></span>
            </div>
        </div>
    `;
    chatContainer.appendChild(messageDiv);
    scrollToBottom();
    return loadingId;
}

// 移除加载消息
function removeLoadingMessage(loadingId) {
    const loadingMessage = document.getElementById(loadingId);
    if (loadingMessage) {
        loadingMessage.remove();
    }
}

// 滚动到底部
function scrollToBottom() {
    const chatContainer = document.querySelector('.chat-container');
    chatContainer.scrollTop = chatContainer.scrollHeight;
}

// 从服务器获取AI回答
async function getAIResponseFromServer(question) {
    try {
        // 发送请求到后端API
        const response = await fetch(API_URL.healthQuery, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            },
            body: JSON.stringify({ query: question }),
            credentials: 'include' // 包含cookies等凭证，让后端处理鉴权
        });

        if (!response.ok) {
            if (response.status === 401 || response.status === 403) {
                window.location.href = '../login.html'; // 未登录或无权限时重定向
                throw new Error('未登录或无权限');
            }
            throw new Error('服务器响应异常: ' + response.status);
        }

        const result = await response.json();
        
        // 处理标准R<T>格式响应
        if (result.code === 1 && result.data) {
            return result.data.answer || '抱歉，我无法回答这个问题。';
        } else {
            throw new Error(result.msg || '获取AI回答失败');
        }
    } catch (error) {
        console.error('健康咨询API请求失败:', error);
        
        // 如果是开发环境或API暂未实现，使用本地模拟数据
        if (error.message.includes('Failed to fetch') || error.message.includes('服务器响应异常')) {
            console.log('使用本地模拟数据代替API');
            return getLocalMockResponse(question);
        }
        
        throw error;
    }
}

// 本地模拟AI回答（仅在API不可用时使用）
function getLocalMockResponse(question) {
    // 本地预设的问答对
    const responses = {
        '过敏有哪些防治措施': `预防和治疗过敏的主要措施包括：

1. 避免接触过敏原
- 及时了解和识别自己的过敏原
- 保持室内通风和清洁
- 定期清洗床单被套

2. 日常预防
- 保持良好的个人卫生
- 增强体质，规律运动
- 保持作息规律，避免熬夜

3. 急性发作处理
- 立即远离过敏原
- 服用抗过敏药物
- 严重时及时就医

4. 长期管理
- 建立过敏日记
- 进行脱敏治疗
- 定期复查`,

        '血压多少算正常': `正常血压范围：
1. 收缩压（高压）: 90-140毫米汞柱
2. 舒张压（低压）: 60-90毫米汞柱

血压分级：
- 理想血压：<120/80
- 正常血压：<130/85
- 正常偏高：130-139/85-89
- 高血压：≥140/90

注意事项：
1. 测量时保持安静
2. 避免运动后立即测量
3. 建议每天固定时间测量
4. 如有异常及时就医`,

        '体检前要注意什么': `体检前注意事项：

1. 空腹检查项目
- 验血、血糖：空腹8-12小时
- B超：至少空腹4小时
- 胃镜：禁食8-12小时

2. 作息安排
- 保证充足睡眠
- 避免剧烈运动
- 避免熬夜饮酒

3. 饮食注意
- 前一天清淡饮食
- 避免高油高盐
- 适量饮水

4. 其他注意
- 穿着舒适便于检查的衣物
- 带好身份证和预约单
- 告知医生特殊情况（如过敏史）`,

        '高血压需要终身服药吗': `关于高血压用药建议：

1. 个性化治疗
- 需要根据病情严重程度
- 考虑年龄和并发症
- 遵医嘱调整用药方案

2. 可能需要长期服药的情况
- 器官已有损害
- 有并发症
- 血压控制不稳定

3. 生活方式干预
- 控制饮食
- 规律运动
- 戒烟限酒
- 保持心情舒畅

4. 重要提醒
- 不建议自行停药
- 定期复查监测
- 保持良好作息`,

        '扭伤急救': `扭伤急救处理步骤：

1. 立即采取RICE原则
- Rest（休息）：立即停止活动
- Ice（冰敷）：20分钟为一次
- Compression（压迫）：弹性绷带包扎
- Elevation（抬高）：患处高于心脏

2. 注意事项
- 48小时内避免热敷
- 不要继续活动
- 包扎不要过紧

3. 就医建议
- 严重疼痛
- 无法负重
- 明显肿胀
- 活动受限`,

        '烫伤紧急处理': `烫伤紧急处理步骤：

1. 立即冷却
- 用流动冷水冲洗15-20分钟
- 水温15-25度最佳
- 不要用冰块直接敷

2. 伤口处理
- 不要擅自弄破水泡
- 不要涂抹牙膏等民间偏方
- 保持伤处清洁

3. 就医情况
- 大面积烫伤
- 深度烫伤
- 特殊部位（脸部、关节等）
- 出现感染症状`,

        '拉肚子怎么办': `腹泻处理建议：

1. 及时补充水分
- 多喝温开水
- 补充电解质
- 可以喝淡盐水

2. 饮食调整
- 暂时禁食生冷
- 少量多餐
- 食用容易消化的食物
- 可以喝粥、煮熟的面条

3. 用药建议
- 可以服用蒙脱石散
- 必要时补充益生菌
- 严重时遵医嘱用药

4. 就医情况
- 持续发烧
- 严重腹痛
- 血便
- 持续超过3天`,

        '发烧急处理': `发烧应对措施：

1. 体温监测
- 正常体温：36.3-37.2℃
- 低热：37.3-38℃
- 中度发热：38.1-39℃
- 高热：≥39.1℃

2. 物理降温
- 温水擦浴
- 额头冷敷
- 多饮水
- 保持室内通风

3. 药物治疗
- 成人可服用对乙酰氨基酚或布洛芬
- 儿童按体重用药，遵医嘱
- 不建议同时使用多种退烧药

4. 就医建议
- 体温超过39度
- 持续高烧超过3天
- 伴有意识模糊、剧烈头痛
- 有基础疾病的人群`
    };

    // 检查是否有预设回答
    for (let key in responses) {
        if (question.includes(key)) {
            return responses[key];
        }
    }

    // 如果没有找到匹配的预设问答，返回默认回答
    return `您的问题"${question}"需要进一步分析。由于我是AI助手，无法给出确切的医疗诊断。建议您通过以下途径获取专业帮助：

1. 咨询家庭医生或专科医生
2. 拨打健康咨询热线
3. 前往医院就诊

为了更好地帮助您，请提供更具体的症状描述或健康问题。`;
}

// 处理控制按钮点击
function handleControlClick(type) {
    switch(type) {
        case '使用须知':
            showUsageGuide();
            break;
        case '中字':
            // 切换字幕显示，待实现
            alert('字幕功能正在开发中');
            break;
        default:
            // 语音控制，切换音量
            toggleVoice();
    }
}

// 显示使用须知
function showUsageGuide() {
    alert(`AI健康助手使用须知：
1. 本服务仅提供健康咨询和知识普及，不构成医疗诊断或建议
2. 如有紧急情况，请立即就医
3. 个人隐私信息将被严格保护
4. 请勿发布违法或不良信息`);
}

// 切换语音状态
function toggleVoice() {
    const voiceBtn = document.querySelector('.control-btn i.fa-volume-up');
    if (voiceBtn.classList.contains('fa-volume-up')) {
        voiceBtn.classList.remove('fa-volume-up');
        voiceBtn.classList.add('fa-volume-mute');
    } else {
        voiceBtn.classList.remove('fa-volume-mute');
        voiceBtn.classList.add('fa-volume-up');
    }
}

// 举报功能
document.querySelector('.report-btn').addEventListener('click', () => {
    alert('感谢您的反馈，我们会认真处理您的举报。');
}); 